<?php

namespace app\bing\controller;

use think\Controller;
use think\Request;

class Alipay extends Controller
{
    /**
     * 冰磊交的，封装支付宝，首先打开支付宝支付平台，开发平台下载php代码，放于public下边就可以，一个pc端支付，一个手机支付
     *1.首先配置公钥和私钥在app下的config下，app_id ...（需要提前下载一个支付宝开放开发平台才可以修改私钥）
     * 2.打开public下，找到支付宝pagepay.php复制里边的代码，放在一个新的控制器当中，
     * 2-1.新建一个方法：pagepay进行调整，如下。。。（看代码中的备注）
     *3.新方法index 这里设置参数，直接调用下边的pagepay方法$this->pagepay()
     */
    public function index()
    {
        $out_trade_no=123456789;//商户订单号，商户网站订单系统中唯一订单号，必填
        $subject='玛莎拉蒂';    ////订单名称，必填
        $total_amount=10;     //付款金额，必填
        $this->pagepay($out_trade_no,$subject,$total_amount);//这里 调用 下边封装的方法（）
    }
    public function pagepay($out_trade_no,$subject,$total_amount,$body=null,$return_url=null,$notify_url=null)//这里把所有参数放在这里
    {
        require_once './alipaypage/pagepay/service/AlipayTradeService.php';//这里路径要修改对
        require_once './alipaypage/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';//这里路径要修改对

        //构造参数
        $payRequestBuilder = new \AlipayTradePagePayContentBuilder();//这里实例化 一定要加  \
        $payRequestBuilder->setBody($body);
        $payRequestBuilder->setSubject($subject);
        $payRequestBuilder->setTotalAmount($total_amount);
        $payRequestBuilder->setOutTradeNo($out_trade_no);

        $config=config('alipay.');                                  //这里要调用config  tp5.1框架需要加.(alipay.) tp6 不需要config('alipay)
        $aop = new \AlipayTradeService($config);                    //这里实例化 一定要加  \

        if ($return_url==null){                                     //这里一定要判断下同步地址和异步地址为空的情况下
            $return_url=$config['return_url'];
        }
        if ($notify_url==null){
            $notify_url=$config['notify_url'];
        }

        /**
         * $out_trade_no    商户订单号
         * $subject         订单名称
         * $total_amount    付款金额
         * $body            商品描述，可空
         * pagePay        电脑网站支付请求
         * @param $builder 业务参数，使用buildmodel中的对象生成。
         * @param $return_url 同步跳转地址，公网可以访问
         * @param $notify_url 异步通知地址，公网可以访问
         * @return $response 支付宝返回的信息
         */
        $response = $aop->pagePay($payRequestBuilder,$return_url,$notify_url);    //这里直接写成参数

        //输出表单
        var_dump($response);
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
